/* 版权所有(C)，上海海鼎信息工程股份有限公司，2020，所有权利保留。
 *
 * 项目名：	kumi.saas.edu.common.util
 * 文件名：	SequenceUtil
 * 模块说明：
 * 修改历史：
 * 2020/1/6 - sunyi - 创建。
 */

package study.saas.common.util;

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import redis.clients.jedis.Jedis;

import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

/**
 * @author sunyi
 * @date 2020/1/6
 */
@Slf4j
public class SequenceUtil {
    public static final String FAST = "seq:f:";
    public static DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMdd");

    public static String allocateFast(String scope, String prefix, String suffix, Jedis jedis) {
        String dateStr = ZonedDateTime.now().format(dateTimeFormatter);
        String key = dateStr + FAST + scope;
        long index = jedis.incr(key);
        jedis.expire(key, 2 * 24 * 60 * 60);
        String sequence = dateStr + StringUtils.leftPad(String.valueOf(index), 8, '0');
        sequence = getSequenceString(prefix, suffix, sequence);
        return sequence;
    }

    private static String getSequenceString(String prefix, String suffix, String sequence) {
        if (StringUtils.isNotEmpty(prefix)) {
            sequence = prefix.concat(sequence);
        }
        if (StringUtils.isNotEmpty(suffix)) {
            sequence = sequence.concat(suffix);
        }
        return sequence;
    }
}
